home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / basic / cursor.lha / Cursor / Examples / Mandelbrot / ManDoub.bas < prev    next >
Encoding:
BASIC Source File  |  1992-09-02  |  1.7 KB  |  78 lines

  1.  
  2.  DEFDBL a-z
  3.  OPTION NOWINDOW
  4.  
  5.  XLPos = -.745468
  6.  XRPos = -.745385
  7.  YDPos = .112979
  8.  YUPos = .113039
  9.  
  10.  MaxIter% = 256
  11.  
  12.  SCREEN 2,640,200,4,2
  13.  WINDOW 2,"Mandelbrot",,8,2
  14.  
  15.  PALETTE 0,0,0,0
  16.  PALETTE 1,1,1,1
  17.  c1 = 0 : c2 = .5 : c3 = 1 : dc1 = 1/6.5 : dc2 = 1/6.5 : dc3 = 1/6.5
  18.  FOR a% = 2 TO 15
  19.    IF c1+dc1 < 0 OR c1+dc1 > 1 THEN dc1 = -dc1
  20.    c1 = c1+dc1
  21.    IF c2+dc2 < 0 OR c2+dc2 > 1 THEN dc2 = -dc2
  22.    c2 = c2+dc2
  23.    IF c3+dc3 < 0 OR c3+dc3 > 1 THEN dc3 = -dc3
  24.    c3 = c3+dc3
  25.    PALETTE a%,c1,c2,c3
  26.  NEXT a%
  27.  
  28.  t& = TIMER
  29.  
  30.  XSize = XRPos-XLPos
  31.  YSize = YUPos-YDPos
  32.  
  33.  XPixelSize = WINDOW(2)
  34.  YPixelSize = WINDOW(3)
  35.  
  36.  mystep% = 1024
  37.  WHILE mystep%
  38.    FOR px% = 0 TO XPixelSize-1 STEP mystep%
  39.      FOR py% = 0 TO YPixelSize-1 STEP mystep%
  40.        IF (px% AND mystep%) OR (py% AND mystep%) OR (mystep% = 1024) THEN
  41.          c.r = XLPos+px%/XPixelSize*XSize
  42.          c.i = YDPos+(YPixelSize-1-py%)/YPixelSize*YSize
  43.          x.r = 0
  44.          x.i = 0
  45.          num% = 0
  46.          x.r.quadrat = x.r*x.r
  47.          x.i.quadrat = x.i*x.i
  48.          WHILE x.r.quadrat+x.i.quadrat < 1000 AND num% < MaxIter%
  49.            x.i = (x.r+x.r)*x.i+c.i
  50.            x.r = x.r.quadrat-x.i.quadrat+c.r
  51.            x.r.quadrat = x.r*x.r
  52.            x.i.quadrat = x.i*x.i
  53.            num% = num%+1
  54.          WEND
  55.          IF num% = MaxIter% THEN
  56.            mycolor% = 0
  57.          ELSE
  58.            mycolor% = 2+(num% MOD 14)
  59.          END IF
  60.          IF mystep% = 1 THEN
  61.            PSET (px%,py%),mycolor%
  62.          ELSE
  63.            LINE (px%,py%)-(px%+mystep%-1,py%+mystep%-1),mycolor%,BF
  64.          END IF
  65.        END IF
  66.      NEXT
  67.    NEXT
  68.    mystep% = mystep%\2
  69.  WEND
  70.  
  71.  WINDOW 2,"Time:"+STR$((TIMER-t&+86400&) MOD 86400&)+" s."
  72.  BEEP
  73.  WHILE INKEY$ <> ""
  74.  WEND
  75.  WHILE INKEY$ = ""
  76.  WEND
  77.  
  78.